#pragma once

#include "Types.h"

namespace Vortex { namespace Wrapper { namespace Direct3D {

	ref class Direct3DDevice9;
	ref class Direct3DSurface9;

	///<summary>Wrapper of IDirect3DTexture9 interface</summary>
	public ref class Direct3DTexture9 {
		IDirect3DTexture9* _handle;

	public:

		///<summary>Direct3DDevice handle</summary>
		property IntPtr Handle { IntPtr get() { return IntPtr(_handle); } }

		property IDirect3DTexture9* NativeHandle { IDirect3DTexture9* get() { return _handle; } }

		Direct3DTexture9(IDirect3DTexture9* handle);

		~Direct3DTexture9();

		///<summary>Retrieves specified surface</summary>
		HResult GetSurfaceLevel(UINT level, [Out] Direct3DSurface9^% result);
	};
}}}